const express = require('express');
const router = express.Router();
const sqlite3 = require('sqlite3').verbose();  // 引入 sqlite3

// 连接 SQLite 数据库
const db = new sqlite3.Database('./courses.db', (err) => {
  if (err) {
    console.error('无法连接到 SQLite 数据库:', err.message);
  } else {
    console.log('已连接到 SQLite 数据库');
  }
});

// 获取所有行程
router.get('/', (req, res) => {
  db.all("SELECT * FROM courses", [], (err, rows) => {
    if (err) {
      console.error('获取行程失败:', err.message);
      return res.status(500).json({ message: '获取行程失败', error: err.message });
    }
    res.status(200).json(rows);
  });
});

// 创建行程
router.post('/', (req, res) => {
  const { name, time, day, instructor } = req.body;

  // 检查行程是否已经存在
  db.get("SELECT * FROM courses WHERE time = ? AND day = ?", [time, day], (err, row) => {
    if (err) {
      console.error('查询行程失败:', err.message);
      return res.status(500).json({ message: '查询行程失败', error: err.message });
    }

    if (row) {
      // 如果行程已存在，进行更新
      db.run("UPDATE courses SET name = ?, instructor = ? WHERE time = ? AND day = ?", [name, instructor, time, day], function(err) {
        if (err) {
          console.error('更新行程失败:', err.message);
          return res.status(500).json({ message: '更新行程失败', error: err.message });
        }
        res.status(200).json({ id: row.id, time, day, name, instructor });
      });
    } else {
      // 插入新行程
      db.run("INSERT INTO courses (time, day, name, instructor) VALUES (?, ?, ?, ?)", [time, day, name, instructor], function(err) {
        if (err) {
          console.error('添加行程失败:', err.message);
          return res.status(500).json({ message: '添加行程失败', error: err.message });
        }
        res.status(201).json({ id: this.lastID, time, day, name, instructor });
      });
    }
  });
});

// 更新行程
router.put('/:id', (req, res) => {
  const { name, time, day, instructor } = req.body;

  // 更新行程信息
  db.run("UPDATE courses SET name = ?, time = ?, day = ?, instructor = ? WHERE id = ?", [name, time, day, instructor, req.params.id], function(err) {
    if (err) {
      console.error('更新行程失败:', err.message);
      return res.status(500).json({ message: '更新行程失败', error: err.message });
    }
    if (this.changes === 0) {
      return res.status(404).json({ message: '行程未找到' });
    }
    res.status(200).json({ id: req.params.id, time, day, name, instructor });
  });
});

// 删除行程
router.delete('/:id', (req, res) => {
  const courseId = req.params.id;

  if (!courseId || isNaN(courseId)) {
    return res.status(400).json({ message: '无效的ID，请检查请求' });
  }

  db.run("DELETE FROM courses WHERE id = ?", [courseId], function(err) {
    if (err) {
      console.error('删除行程失败:', err.message);
      return res.status(500).json({ message: '删除行程失败', error: err.message });
    }
    if (this.changes === 0) {
      console.log('未找到对应ID，无法删除');
      return res.status(404).json({ message: '行程未找到' });
    }
    console.log(`ID 为 ${courseId} 的行程删除成功`);
    res.status(200).json({ message: '行程删除成功' });
  });
});


module.exports = router;
